home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekikoh Dennoh Club 2
/
Gekikoh Dennoh Club Vol. 2 (Japan).7z
/
Gekikoh Dennoh Club Vol. 2 (Japan) (Track 01).bin
/
games
/
rosa2
/
src
/
spload.s
< prev
next >
Wrap
Text File
|
1997-09-27
|
2KB
|
66 lines
.include doscall.mac
.include iocscall.mac
* 補足:かなり、昔に作成したゲームから転がした処理なので
* 無駄な事を、随分やっています。
* コメントをマメに入れてるのは、当時アセンブラを勉強
* しながら作成した為です。(当時、ソースに全角文字が有るのが、いやでした)
* 最適化しようと思いましたが、出来ませんでした。(時間不足)
* subtract してから bne でループしているのは、dbraという命令を知らなかった
* からです。
IOCS equ $0F
.text
.even
move.l #_CRTMOD,d0 * グラフィック モード 256 * 256
move.w #6,d1 * 256 * 256 Mode
trap #IOCS
move.l #_B_SUPER,d0 * ユーザー --> スーパー モード
move.l #0,d1
movea.l d1,a1
trap #IOCS
move.l d0,-(sp) * ssp ホゾン
IOCS _SP_INIT
sp_load:
tst (Set_Counter) * スプライト ノ セット ケンスウ ノ 0 ケン チェック
beq pl_load * 0 ノ トキ ニ ハ pl_load ヘ ブランチ
sp_load_main:
lea Sprite_Data_Area,a1 * A1 レジスタ = スプライト データ アドレス
lea Set_Pattern_No,a2 * A2 レジスタ = セット データ アドレス
sp_load_loop_1:
movea.l #$EB8000,a0 * A0 レジスタ = PCG エリア アドレス
move (a2)+,d0 * D0 レジスタ = セット カショ
mulu #128,d0 * D0 = D0 * 128
add.l d0,a0 * A0 = A0 + D1 ( PCG カクノウ アドレス )
move.w #64,d0 * D0 レジスタ = データ セット ケンスウ
* ext.w d0 * D0 レジスタ ヲ フゴウ カクチョウ(何故?)
sp_load_loop_2:
move.w (a1)+,(a0)+ * データ カクノウ ( アドレス ハ ポスト インクリメント )
sub #1,d0
bne sp_load_loop_2 * D0 レジスタ ノ カイスウ ブン sp_load_loop_2 ヲ ループ
sub #1,(Set_Counter)
bne sp_load_loop_1 * Set_Counter ノ カイスウ ブン sp_load_loop_1 ヲ ループ
pl_load:
movea.l #$E82200,a0 * A0 レジスタ = パレット アドレス
lea Palet_Area,a1 * A1 レジスタ = パレット データ カクノウ アドレス
move.w #256,d0
pl_load_loop:
move (a1)+,(a0)+ * パレット カラー コード テンソウ
sub #1,d0
bne pl_load_loop
move.l #_B_SUPER,d0 * スーパー ーー> ユーザー モード
move.l (sp)+,d1
movea.l d1,a1
trap #IOCS
dc.w _EXIT
.include rosa.sp